package main

import "fmt"

func main() {
	fmt.Println("Hello Go world!")
	fmt.Println("================")
	//methods 1: go语言 摈弃了语句鼻血以分号作为语句结束标记的习惯
	var name string = "engo"
	fmt.Println(name)
	// 2. 省略赋值，采用零值， 每种类型都有对应的零值，
	var name1 string // name 采用零值为 “”
	fmt.Println(name1)
	// 3.省略类型，依据初始化表达式得到的值自动推导类型
	var name2 = "alex"
	fmt.Println(name2)
	// 4. 省略var   简短生怕你（只能在函数内用）
	name3 := "wusir"
	fmt.Println(name3)

	fmt.Println("================")
	// * 声明的一组变量中每个都必须被赋值    */
	// 1. 声明一组类型相同的
	var a, b, c int = 10, 20, 30
	fmt.Println(a, b, c)
	var x, y, z int // 零值
	fmt.Println(x, y, z)

	//2. 声明一组类型不同的
	var q, w, e = true, 3.1, "egon" // 类型推导出为 bool , float64 ,  string
	fmt.Println(q, w, e)

	// 3.声明一组类型不同，注意每行结尾不要加逗号
	var (
		m int = 3
		n string
	)
	fmt.Println(m, n)

	//4. 简短声明一组变量
	// := 左边至少得有一个形变量，此时，指针对老变量就是改值， 针对新变量就是声明新的
	// 通常变量数量不宜过多，否则影响程序可读性
	i, j := 0, 1
	fmt.Println(i, j)
	fmt.Println("================")
}
